package com.guocheng.config.shiro;

import com.guocheng.utils.PasswordUtils;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;

public class Comparator extends SimpleCredentialsMatcher {

    /**
     * 用户输入的原始密码和数据库中存储的密码进行比较（认证信息对象中存在）
     *
     * @param token 用户输入的令牌数据
     * @param info  从认证方法传来的数据，数据库中的数据
     * @return true比较正确，登录成功，false比较失败，登录失败，抛出异常
     */
    @Override
    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
        //1、获取用户输入的数据
        char[] password = ((UsernamePasswordToken) token).getPassword();
        //2、进行比较
        return PasswordUtils.passwordEquals(info.getCredentials().toString(),password);
    }
}
